// kuoqi/component/kq-paginate-v2.js
//引用app信息
const app = getApp();

Component({
  options: {
    addGlobalClass: true,
  },
  /**
   * 组件的属性列表
   */
  properties: {
    url: { // 属性名
      type: String, // 类型（必填），目前接受的类型包括：String, Number, Boolean, Object, Array, null（表示任意类型）
      value: '22', // 属性初始值（可选），如果未指定则会根据类型选择一个
      observer: function (newVal, oldVal) { 
        //console.log('url属性被改变');
      } // 属性被改变时执行的函数（可选），也可以写成在methods段中定义的方法名字符串, 如：'_propertyChange'
    },

    //模板ID
    template : {
      type: String, // 类型（必填），目前接受的类型包括：String, Number, Boolean, Object, Array, null（表示任意类型）
      value: '', // 属性初始值（可选），如果未指定则会根据类型选择一个
      observer: function (newVal, oldVal) { 
        //console.log('template属性被改变');
      } // 属性被改变时执行的函数（可选），也可以写成在methods段中定义的方法名字符串, 如：'_propertyChange'
    },

    //获取form表单的数据接入
    formdata: {
      type: Object, // 类型（必填），目前接受的类型包括：String, Number, Boolean, Object, Array, null（表示任意类型）
      value: {}, // 属性初始值（可选），如果未指定则会根据类型选择一个
      observer: function (newVal, oldVal) { 
        console.log(newVal,oldVal);
        console.log('formdata属性被改变');
      } // 属性被改变时执行的函数（可选），也可以写成在methods段中定义的方法名字符串, 如：'_propertyChange'
    },
    
    
  },

  /**
   * 组件的初始数据
   */
  data: {
    loadtips:'数据加载中',
    isLoaded:false,//是否加载成功
    paginate:{
      isEmpty:false,//是否数据为空
      hasNext:true,//是否有更多的控制，想想开始放到外面好一些 
      isLoading:false,//数据加载中，加载完成之后请改为false,加载的时候自动变更为true
      pageNow:1,//当前请求携带的分页页面信息
      data:[],//核心数据列表
    },

    //下拉刷新相关信息
    //设置当前下拉刷新状态，true 表示下拉刷新已经被触发，false 表示下拉刷新未被触发
    refresherTriggered:false,
    
    
    
  },

  /**
   * 组件生命周期函数-在组件实例刚刚被创建时执行，注意此时不能调用 setData
   */
  created:function(){
    app.kuoqi.initPage(this);//基础的数据初始化
  },

  lifetimes: {
    // 生命周期函数，可以为函数，或一个在methods段中定义的方法名
    attached: function () { 
      //console.log(this);
      //this._bindPage();
      var pages = getCurrentPages();
      var page = pages[pages.length - 1];
      page.kqPaginate = this;
      // console.log(page,this.methods);
      //console.log('lifetimes->attached');
    },
    moved: function () { 
      //console.log('lifetimes->moved');
    },
    detached: function () { 
      //console.log('lifetimes->detached');
    },
  },

  pageLifetimes: {
    // 组件所在页面的生命周期函数
    show: function () { 
      // var pages = getCurrentPages();
      // console.log(pages);
      //console.log(this);
      console.log(2);
    },
    hide: function () { },
    resize: function () { },
  },

  /**
   * 组件生命周期函数-在组件实例进入页面节点树时执行)
   */
  attached:function(){
    console.log(1);
  },
  /**
   * ready
   */
  ready:function(){
    var paginate = this.data.paginate;
    paginate.isLoading = true;
    this.setData({paginate:paginate})
    this._initPaginate();

  },
  /**
   * 组件的方法列表
   */
  methods: {
    _bindPage:function(){
      console.log(this);

    },

    _onReachBottom: function () {
      console.log(123);
    },

    _initListen:function(){
      //这个执行一次
      const query = this.createSelectorQuery()
      query.select('#scroll_view').node(function(res){
        // res.node.scrollEnabled = true;
        // res.node.bounces = false;
        res.node._pagingEnabled = true;
        // res.node.pagingEnabled = true;
        // res.node.decelerationDisabled = true;//取消滚动惯性 (仅在 iOS 下生效)
        // console.log(res.node);
        console.log(res.node);
      }).exec();
      // wx.createSelectorQuery()
      //   .select('#scroll_view')
      //   .node()
      //   .exec((res) => {
      //     console.log(res);
      //     const scrollView = res[0].node;
      //     scrollView.scrollEnabled = false;
      //   })
      // query.exec(function(res){
      //     console.log(res);
      //     //res[0].top       // #the-id节点的上边界坐标
      //     //res[1].scrollTop // 显示区域的竖直滚动位置
      // })
    },

    //_initPaginate初始化分页信息
    _initPaginate:function(){
      var ths = this;
      var url = this.data.url;
      var pager = 1;
      var formdata = this.data.formdata;
      formdata.pager = pager;
      app.kuoqi.ajax({
        url:url,
        type:'post',
        dataType:'json',
        data:formdata,
        success:function(rs){
          if(rs.status==1){
            ths._initData(rs.data);
            //ths._initListen();//初始化监听的基础信息
          }else{
            wx.showModal({
              content:"加载失败",
              cancelColor: 'cancelColor',
            })
          }
        },
        error:function(){
          ths.setData({isLoading:false});
        }
      });
    },

    //追加数据
    _addData:function(data){
      //参数复用
      var paginate = this.data.paginate;
      if(data.totalCount){
        paginate.isEmpty = false;
      }

      paginate.isLoading = false;//加载成功，将这个属性变更为false
      //数据赋值
      for(var i in data)
      {
        if(i=='data'){
          //请使用数据追加
          //paginate.data.concat(data.data);
          for(var j =0;j<data.data.length;j++){
            paginate.data.push(data.data[j]);
          }
        }else{
          paginate[i] = data[i];
        }
      }

      this.setData({
        paginate:paginate,
        isLoaded:true,
      });
    },

    //初始化数据
    _initData:function(data){
      var paginate = this.data.paginate;
      if(data.totalCount){
        paginate.isEmpty = false;
      }

      paginate.isLoading = false;//加载成功，将这个属性变更为false

      //数据赋值
      for(var i in data){
        paginate[i] = data[i];
      }

      this.setData({
        paginate:paginate,
        isLoaded:true,
      });

      this._initListen();
    },

    //滚动到底部触发本方法
    _context_to_button:function(){
      //加载更多触发
      var ths = this;
      var paginate = this.data.paginate;
      //数据本来在加载中，不执行具体内容
      if(paginate.isLoading){  return ;}

      //当前已经没有更多信息，停止无谓的请求
      if(!paginate.hasNext){ return ;} 

      //开始请求数据
      var url = this.data.url;
      var pager = parseInt(paginate.pageNow) + 1;
      this.setData({isLoading:true});//保证只有一个请求进行中
      var formdata = this.data.formdata;
      formdata.pager = pager;
      app.kuoqi.ajax({
        url:url,
        type:'post',
        dataType:'json',
        data:formdata,
        success:function(rs){
          ths.setData({isLoading:false});
          if(rs.status==1){
            ths._addData(rs.data);
          }else{
            wx.showModal({
              content:"加载失败",
              cancelColor: 'cancelColor',
            })
          }
        },
        error:function(){
          ths.setData({isLoading:false});
        }
      });
    },

    //自定义下拉被触发
    _refresherrefresh:function(e){
      var ths = this;
      var url = this.data.url;
      var pager = 1;
      var formdata = this.data.formdata;
      formdata.pager = 1;
      app.kuoqi.ajax({
        url:url,
        type:'post',
        dataType:'json',
        data:formdata,
        success:function(rs){
          if(rs.status==1){
            ths._initData(rs.data);
            //完成之后停止动画
            wx.stopPullDownRefresh();
          }else{
            wx.showModal({
              content:"加载失败",
              cancelColor: 'cancelColor',
            })
          }
        },
        error:function(){
          ths.setData({isLoading:false});
        }
      });
    }
  },
})
